/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package productos.datamodel;

import datamodel.FiltradoDataModel;
import entities.Producto;
import facades.ProductoFacade;
import java.io.Serializable;
import java.util.List;
import javax.inject.Inject;
import sql.FiltradoProductosSQLGenerator;

/**
 *
 * @author damfercer
 */
public class FiltroProductos implements Serializable{
    private FiltradoProductosSQLGenerator filtradoSQLGenerator;
    @Inject
    private ProductoFacade productoFacade;
    private FiltradoDataModel filtradoDataModel;
    
    public FiltroProductos(){
        filtradoSQLGenerator=new FiltradoProductosSQLGenerator();
        filtradoDataModel=new FiltradoDataModel();
    }
    
    public void init(){
        filtradoSQLGenerator=new FiltradoProductosSQLGenerator();
        filtradoDataModel=new FiltradoDataModel();
    }
    
    public List<Producto> filtrar(){
        String sql=getFiltradoSQLGenerator().generateSQL(filtradoDataModel);
        List<Producto> productos=getProductoFacade().filtrarProductos(sql);
        return productos;
    }

    /**
     * @return the filtradoDataModel
     */
    public FiltradoDataModel getFiltradoDataModel() {
        return filtradoDataModel;
    }

    /**
     * @param filtradoDataModel the filtradoDataModel to set
     */
    public void setFiltradoDataModel(FiltradoDataModel filtradoDataModel) {
        this.filtradoDataModel = filtradoDataModel;
    }

    /**
     * @return the filtradoSQLGenerator
     */
    public FiltradoProductosSQLGenerator getFiltradoSQLGenerator() {
        return filtradoSQLGenerator;
    }

    /**
     * @param filtradoSQLGenerator the filtradoSQLGenerator to set
     */
    public void setFiltradoSQLGenerator(FiltradoProductosSQLGenerator filtradoSQLGenerator) {
        this.filtradoSQLGenerator = filtradoSQLGenerator;
    }

    /**
     * @return the productoFacade
     */
    public ProductoFacade getProductoFacade() {
        return productoFacade;
    }

    /**
     * @param productoFacade the productoFacade to set
     */
    public void setProductoFacade(ProductoFacade productoFacade) {
        this.productoFacade = productoFacade;
    }
    
}
